'*********************************** 'supeana_data Ver 0.0.3 'JA4LAO Tuneo.Ito '2007.10.04 'AT90S8535-10.6MHz '*********************************** Config Portc = Input Config Portd.5 = Input Config Portd.6 = Input Config Portd.0 = Input Config Portd.1 = Input Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Input Config Porta.3 = Output Config Kbd = Portc Config Debounce = 3 Dim Q_key As Byte Dim C_key As Long Dim D_key As Long Dim E_key As Byte Dim K_key As Byte Dim I_key As Byte Dim N_key As Byte Dim M_key As Byte Dim P_key As Byte Dim Kazu_key(10) As Long Dim Moto_key(10) As Long Dim Bango_key As Long 'Dim Re_data As Long 'Dim Re_step As Long Dim Data_flag As Byte Dim Moto_data(5) As Long Dim F_data(3) As Long Dim C_freq As Long Dim C_freq_n As String * 8 Dim Keta_num As Long Dim N As Byte Dim X_pos As Byte Dim Y_pos As Byte Dim Kari_data1 As Long Dim Kari_data2 As Long Dim Kari_data3 As Long Cls : Cursor Off N_key = 1 : K_key = "" 'Re_data = 1000 'Re_step = 10 Data_flag = 1 Moto_data(1) = 500000 'center_freq Moto_data(2) = 1000000 'span Moto_data(3) = 30 'sweeptime Moto_data(4) = 10 'att Moto_data(5) = 0 Gosub Data_setei 'level Gosub Syoki_gamen 'Gosub Data_out Reset Porta.0 'Enable Interrupts 'Enable Int0 'On Int0 Data_out Nosave Main: Gosub Nyuryoku Goto Main End Nyuryoku: Do Debounce Pind.0 , 1 , Data_out , Sub K_key = Getkbd() If K_key =< 15 Then Gosub Hantei If M_key = 1 Then Gosub Settei Else End If End If Loop Return Hantei: Waitms 10 P_key = Getkbd() If P_key = K_key Then M_key = 0 Else M_key = 1 Waitms 30 End If Return Settei: Select Case K_key Case 0 To 9 Moto_key(n_key) = K_key Gosub Hyouji N_key = N_key + 1 M_key = 0 : K_key = 16 Case 10 'start_freq Data_flag = 1 Case 11 'stop_freq Data_flag = 2 Case 12 'sweep time Data_flag = 3 'Case 13 'att ' Data_flag = 4 'Case 14 'level ' Data_flag = 5 Case 15 Gosub Kettei Case Else End Select Return Hyouji: Select Case Data_flag Case Is >= 3 If N_key > 4 Then Return Case Else End Select Q_key = N_key : E_key = N_key -1 : D_key = 0 For I_key = 1 To Q_key If E_key = 0 Then C_key = 1 Else C_key = 10 ^ E_key End If Kazu_key(i_key) = Moto_key(i_key) * C_key E_key = E_key - 1 Next I_key For I_key = 1 To Q_key D_key = D_key + Kazu_key(i_key) Next I_key Keta_num = D_key Gosub Ketasu Gosub Lcd_pos Lcd D_key Return Kettei: Moto_data(data_flag) = D_key Gosub Seigen 'Gosub C_freq Gosub Lcd_hyouji Gosub Data_setei 'Gosub Data_out D_key = 0 For I_key = 1 To N_key Moto_key(i_key) = 0 Kazu_key(i_key) = 0 Next I_key N_key = 1 : K_key = 16 Return 'Gosub C_freq Gosub Lcd_hyouji Return Syoki_gamen: Locate 1 , 2 : Lcd "500000K" Locate 2 , 1 : Lcd "1000000K" Locate 3 , 8 : Lcd "K" Locate 4 , 8 : Lcd "K" 'Locate 1 , 13 : Lcd "0dbm" 'Locate 2 , 13 : Lcd "0db" Locate 3 , 13 : Lcd "1ms" 'Locate 4 , 14 : Lcd "dbm" Return Lcd_pos: Select Case Data_flag Case 1 Locate 1 , 1 : Lcd " " Y_pos = 1 Case 2 Locate 2 , 1 : Lcd " " Y_pos = 2 Case 3 Locate 3 , 9 : Lcd " " Y_pos = 3 X_pos = X_pos + 6 'Case 4 ' Locate 2 , 9 : Lcd " " ' Y_pos = 2 ' X_pos = X_pos + 6 'Case 5 ' Locate 1 , 9 : Lcd " " ' Y_pos = 1 ' X_pos = X_pos + 6 End Select Locate Y_pos , X_pos Return Ketasu: C_freq_n = Str(keta_num) N = Len(c_freq_n) X_pos = 8 - N Return Lcd_hyouji: Keta_num = Moto_data(data_flag) Gosub Ketasu Gosub Lcd_pos Lcd Moto_data(data_flag) Return Data_out: 'Set Portd.1 'Waitus 10 'Reset Portd.1 Bitwait Pind.1 , Set For I_key = 1 To 3 Set Porta.3 Shiftout Porta.1 , Pina.2 , F_data(i_key) , 0 , 32 , 50 Reset Porta.3 Next I_key 'Enable Int0 Return Seigen: Select Case Data_flag Case 1 If Moto_data(1) < 0 Then Moto_data(1) = 0 If Moto_data(1) > 1000000 Then Moto_data(1) = 1000000 ' If Moto_data(1) > Moto_data(2) Then Moto_data(1) = Moto_data(2) Case 2 Select Case Moto_data(2) Case 1 To 59 Moto_data(2) = 60 Case Is > 1000000 Moto_data(2) = 1000000 End Select Case 3 If Moto_data(3) < 1 Then Moto_data(3) = 1 If Moto_data(3) > 10000 Then Moto_data(3) = 10000 'Case 4 ' If Moto_data(4) < 0 Then Moto_data(4) = 0 ' If Moto_data(4) > 50 Then Moto_data(4) = 50 'Case 5 ' If Moto_data(5) > 50 Then Moto_data(5) = 50 ' If Moto_data(5) < -50 Then Moto_data(5) = -50 End Select Return Data_setei: Select Case Moto_data(1) Case Is =< 500000 Kari_data1 = Moto_data(1) * 2 If Moto_data(2) > Kari_data1 Then Moto_data(2) = Kari_data1 Case Else Kari_data1 = Moto_data(1) Kari_data1 = 1000000 - Kari_data1 Kari_data2 = Kari_data1 * 2 If Moto_data(2) > Kari_data2 Then Moto_data(2) = Kari_data2 End Select Kari_data1 = Moto_data(2) Kari_data1 = Kari_data1 / 2 F_data(1) = Moto_data(1) - Kari_data1 F_data(2) = Moto_data(1) + Kari_data1 F_data(3) = Moto_data(3) Kari_data3 = F_data(2) - f_data(1) C_freq_n = Str(kari_data3) Gosub X_pos_settei Locate 2 , 1 : Lcd " " Locate 2 , X_pos : Lcd Kari_data3 C_freq_n = Str(f_data(1)) Gosub X_pos_settei Locate 3 , 1 : Lcd " " Locate 3 , X_pos : Lcd F_data(1) C_freq_n = Str(f_data(2)) Gosub X_pos_settei Locate 4 , 1 : Lcd " " Locate 4 , X_pos : Lcd F_data(2) Return X_pos_settei: N = Len(c_freq_n) X_pos = 8 - N Return